package com.losrebellos.utils.text {
	/**
	 * @author Los Rebellos (Benoit Vinay)
	 */
	public final class IDGeneratorUtils
	{
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// CONSTANTS
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		private static const DEFAULT_REFERENCE:String	= "IDGeneratorUtils/reference/default";
		private static const IDS:Vector.<String>		= new Vector.<String>();
		
		
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// GENERATE A NEW ID
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		private static function generateID(reference:String = null):uint
		{
			return IDS.push(IDS.length + "/" + (reference || DEFAULT_REFERENCE)) - 1;
		}
		
		
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// GET AN UNIQUE ID
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		public static function getUniqueStringID(reference:String = null):String
		{
			return IDS[generateID(reference)];
		}
		public static function getUniqueIntID(reference:String = null):uint
		{
			return generateID(reference);
		}
	}
}